package com.atguigu;

/**
 * @Author 孔德成
 * @Slogan 致敬大师，致敬未来的你
 * @date 2021/8/6
 */
public class LambdaExpressDemo {
    public static void main(String[] args) {
        Foo foo = () -> {
            System.out.println("Hello");
        };

        foo.hello();

        Foo2 foo2 = (a, b) -> {
            return a + b;
        };
        int result = foo2.add(1, 2);
        System.out.println("result = " + result);

    }

}

/**
 * 只有一个抽象方法的接口叫函数式接口
 * Foo foo = ()->{ System.out.println("Hello");};
 * foo.hello();
 */
interface Foo {
    void hello();
}

/**
 * 显示声明函数式接口
 * Foo2 foo2 = (a, b) -> { return a + b;};
 * int result = foo2.add(1, 2);
 * System.out.println("result = " + result);
 */

@FunctionalInterface
interface Foo2 {
    int add(int a, int b);
}

/**
 * 函数式接口里可以有多个默认方法实现
 */
@FunctionalInterface
interface Foo3 {
    int add(int a, int b);

    default void hello() {
        System.out.println("Hello");
    }

    default void hello2() {
        System.out.println("Hello");
    }
}

/**
 * 函数式接口里可以有多个静态方法
 */
@FunctionalInterface
interface Foo4 {
    int add(int a, int b);

    static void hello() {
        System.out.println("Hello");
    }

    static void hello2() { System.out.println("Hello");}
}